{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn.functional as F"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# replace following class code with an easy sequential network\n",
    "class Net(torch.nn.Module):\n",
    "    def __init__(self, n_feature, n_hidden, n_output):\n",
    "        super(Net, self).__init__()\n",
    "        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # hidden layer\n",
    "        self.predict = torch.nn.Linear(n_hidden, n_output)   # output layer\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(self.hidden(x))      # activation function for hidden layer\n",
    "        x = self.predict(x)             # linear output\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "net1 = Net(1, 100, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# easy and fast way to build your network\n",
    "net2 = torch.nn.Sequential(\n",
    "    torch.nn.Linear(1, 100),\n",
    "    torch.nn.ReLU(),\n",
    "    torch.nn.Linear(100, 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Net(\n",
      "  (hidden): Linear(in_features=1, out_features=100, bias=True)\n",
      "  (predict): Linear(in_features=100, out_features=1, bias=True)\n",
      ")\n",
      "Sequential(\n",
      "  (0): Linear(in_features=1, out_features=100, bias=True)\n",
      "  (1): ReLU()\n",
      "  (2): Linear(in_features=100, out_features=1, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "print(net1)     # net1 architecture\n",
    "print(net2)     # net2 architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x10b64f310>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "import torch.utils.data as Data\n",
    "\n",
    "torch.manual_seed(1234)    # reproducible"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "BATCH_SIZE = 5\n",
    "# BATCH_SIZE = 8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.linspace(1, 10, 10)       # this is x data (torch tensor)\n",
    "y = torch.linspace(10, 1, 10)       # this is y data (torch tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "torch_dataset = Data.TensorDataset(x, y)\n",
    "loader = Data.DataLoader(\n",
    "    dataset=torch_dataset,      # torch TensorDataset format\n",
    "    batch_size=BATCH_SIZE,      # mini batch size\n",
    "    shuffle=True,               # random shuffle for training\n",
    "    num_workers=2,              # subprocesses for loading data\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch:  0 | Step:  0 | batch x:  [7. 4. 1. 5. 2.] | batch y:  [ 4.  7. 10.  6.  9.]\n",
      "Epoch:  0 | Step:  1 | batch x:  [ 6. 10.  8.  3.  9.] | batch y:  [5. 1. 3. 8. 2.]\n",
      "Epoch:  1 | Step:  0 | batch x:  [3. 2. 9. 8. 5.] | batch y:  [8. 9. 2. 3. 6.]\n",
      "Epoch:  1 | Step:  1 | batch x:  [ 4.  1.  6.  7. 10.] | batch y:  [ 7. 10.  5.  4.  1.]\n",
      "Epoch:  2 | Step:  0 | batch x:  [10.  8.  4.  1.  5.] | batch y:  [ 1.  3.  7. 10.  6.]\n",
      "Epoch:  2 | Step:  1 | batch x:  [2. 3. 7. 9. 6.] | batch y:  [9. 8. 4. 2. 5.]\n",
      "Epoch:  3 | Step:  0 | batch x:  [6. 8. 9. 5. 1.] | batch y:  [ 5.  3.  2.  6. 10.]\n",
      "Epoch:  3 | Step:  1 | batch x:  [ 7. 10.  3.  4.  2.] | batch y:  [4. 1. 8. 7. 9.]\n",
      "Epoch:  4 | Step:  0 | batch x:  [ 4.  7.  6.  2. 10.] | batch y:  [7. 4. 5. 9. 1.]\n",
      "Epoch:  4 | Step:  1 | batch x:  [9. 5. 3. 8. 1.] | batch y:  [ 2.  6.  8.  3. 10.]\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(5):   # train entire dataset 5 times\n",
    "    for step, (batch_x, batch_y) in enumerate(loader):  # for each training step\n",
    "        # train your data...\n",
    "        print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',\n",
    "              batch_x.numpy(), '| batch y: ', batch_y.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "BATCH_SIZE = 8\n",
    "loader = Data.DataLoader(\n",
    "    dataset=torch_dataset,      # torch TensorDataset format\n",
    "    batch_size=BATCH_SIZE,      # mini batch size\n",
    "    shuffle=True,               # random shuffle for training\n",
    "    num_workers=2,              # subprocesses for loading data\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch:  0 | Step:  0 | batch x:  [10.  5.  7.  6.  8.  1.  3.  4.] | batch y:  [ 1.  6.  4.  5.  3. 10.  8.  7.]\n",
      "Epoch:  0 | Step:  1 | batch x:  [2. 9.] | batch y:  [9. 2.]\n",
      "Epoch:  1 | Step:  0 | batch x:  [ 5.  6.  8.  3. 10.  1.  4.  9.] | batch y:  [ 6.  5.  3.  8.  1. 10.  7.  2.]\n",
      "Epoch:  1 | Step:  1 | batch x:  [2. 7.] | batch y:  [9. 4.]\n",
      "Epoch:  2 | Step:  0 | batch x:  [9. 1. 3. 7. 5. 2. 4. 8.] | batch y:  [ 2. 10.  8.  4.  6.  9.  7.  3.]\n",
      "Epoch:  2 | Step:  1 | batch x:  [ 6. 10.] | batch y:  [5. 1.]\n",
      "Epoch:  3 | Step:  0 | batch x:  [ 3.  5. 10.  2.  9.  8.  4.  6.] | batch y:  [8. 6. 1. 9. 2. 3. 7. 5.]\n",
      "Epoch:  3 | Step:  1 | batch x:  [1. 7.] | batch y:  [10.  4.]\n",
      "Epoch:  4 | Step:  0 | batch x:  [10.  5.  6.  4.  2.  1.  9.  7.] | batch y:  [ 1.  6.  5.  7.  9. 10.  2.  4.]\n",
      "Epoch:  4 | Step:  1 | batch x:  [8. 3.] | batch y:  [3. 8.]\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(5):   # train entire dataset 5 times\n",
    "    for step, (batch_x, batch_y) in enumerate(loader):  # for each training step\n",
    "        # train your data...\n",
    "        print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',\n",
    "              batch_x.numpy(), '| batch y: ', batch_y.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.utils.data as Data\n",
    "import torch.nn.functional as F\n",
    "from torch.autograd import Variable\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x10b64f310>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.manual_seed(12345)    # reproducible"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "LR = 0.01\n",
    "BATCH_SIZE = 32\n",
    "EPOCH = 12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11bb2c710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sample dataset\n",
    "x = torch.unsqueeze(torch.linspace(-1, 1, 1000), dim=1)\n",
    "y = x.pow(2) + 0.3*torch.normal(torch.zeros(*x.size()))\n",
    "\n",
    "# plot dataset\n",
    "plt.scatter(x.numpy(), y.numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-1.0000],\n",
       "        [-0.9980],\n",
       "        [-0.9960],\n",
       "        [-0.9940],\n",
       "        [-0.9920],\n",
       "        [-0.9900],\n",
       "        [-0.9880],\n",
       "        [-0.9860],\n",
       "        [-0.9840],\n",
       "        [-0.9820]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.5561],\n",
       "        [1.1422],\n",
       "        [0.0882],\n",
       "        [1.1212],\n",
       "        [1.0920],\n",
       "        [0.9764],\n",
       "        [1.0417],\n",
       "        [0.5877],\n",
       "        [1.6916],\n",
       "        [1.5640]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "torch_dataset = Data.TensorDataset(x, y)\n",
    "loader = Data.DataLoader(\n",
    "    dataset=torch_dataset, \n",
    "    batch_size=BATCH_SIZE, \n",
    "    shuffle=True, num_workers=2,)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch.utils.data.dataset.TensorDataset at 0x11ee7a470>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch.utils.data.dataloader.DataLoader at 0x11ee7a4e0>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Net(torch.nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.hidden = torch.nn.Linear(1, 20)   # hidden layer\n",
    "        self.predict = torch.nn.Linear(20, 1)   # output layer\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(self.hidden(x))      # activation function for hidden layer\n",
    "        x = self.predict(x)             # linear output\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "net_SGD         = Net()\n",
    "net_Momentum    = Net()\n",
    "net_RMSprop     = Net()\n",
    "net_Adam        = Net()\n",
    "nets = [net_SGD, net_Momentum, net_RMSprop, net_Adam]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Net(\n",
       "  (hidden): Linear(in_features=1, out_features=20, bias=True)\n",
       "  (predict): Linear(in_features=20, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net_Adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Net(\n",
       "  (hidden): Linear(in_features=1, out_features=20, bias=True)\n",
       "  (predict): Linear(in_features=20, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net_Momentum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Net(\n",
       "  (hidden): Linear(in_features=1, out_features=20, bias=True)\n",
       "  (predict): Linear(in_features=20, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net_RMSprop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Net(\n",
       "  (hidden): Linear(in_features=1, out_features=20, bias=True)\n",
       "  (predict): Linear(in_features=20, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net_SGD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "opt_SGD         = torch.optim.SGD(net_SGD.parameters(), lr=LR)\n",
    "opt_Momentum    = torch.optim.SGD(net_Momentum.parameters(), \n",
    "                                  lr=LR, momentum=0.8)\n",
    "opt_RMSprop     = torch.optim.RMSprop(net_RMSprop.parameters(), \n",
    "                                      lr=LR, alpha=0.9)\n",
    "opt_Adam        = torch.optim.Adam(net_Adam.parameters(), \n",
    "                                   lr=LR, betas=(0.9, 0.99))\n",
    "optimizers = [opt_SGD, opt_Momentum, opt_RMSprop, opt_Adam]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Adam (\n",
       "Parameter Group 0\n",
       "    amsgrad: False\n",
       "    betas: (0.9, 0.99)\n",
       "    eps: 1e-08\n",
       "    lr: 0.01\n",
       "    weight_decay: 0\n",
       ")"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "opt_Adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGD (\n",
       "Parameter Group 0\n",
       "    dampening: 0\n",
       "    lr: 0.01\n",
       "    momentum: 0.8\n",
       "    nesterov: False\n",
       "    weight_decay: 0\n",
       ")"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "opt_Momentum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RMSprop (\n",
       "Parameter Group 0\n",
       "    alpha: 0.9\n",
       "    centered: False\n",
       "    eps: 1e-08\n",
       "    lr: 0.01\n",
       "    momentum: 0\n",
       "    weight_decay: 0\n",
       ")"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "opt_RMSprop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGD (\n",
       "Parameter Group 0\n",
       "    dampening: 0\n",
       "    lr: 0.01\n",
       "    momentum: 0\n",
       "    nesterov: False\n",
       "    weight_decay: 0\n",
       ")"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "opt_SGD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss_func = torch.nn.MSELoss()\n",
    "losses_his = [[], [], [], []]   # record loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MSELoss()"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss_func"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch:  0\n",
      "Epoch:  1\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Applications/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:14: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n",
      "  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch:  2\n",
      "Epoch:  3\n",
      "Epoch:  4\n",
      "Epoch:  5\n",
      "Epoch:  6\n",
      "Epoch:  7\n",
      "Epoch:  8\n",
      "Epoch:  9\n",
      "Epoch:  10\n",
      "Epoch:  11\n"
     ]
    },
    {
     "data": {
      "image/png": "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Gzdy1lln8dJLL1FTU8ONN97IbrvtxuLFi3n55Zd57bXXePHFF/n617/OE088wQMPPMDo0aP51a9+heu6PPPMM3zmM59h8+bNDBkyhFtuuYWRI0eyYMEC5s2bx9KlS3n77be5+eabmTdvHpdffjltbW08+uijfP7zn2fVqlXU1tby2c9+FoBZs2bx61//GoCFCxcyf/58nnjiCXbffXfOPPNMrrjiCt58801uu+029t57+ysP+uyoprC8XsyqLCNYdhT2GLYHf/jwHxhWMzAlkt+rGI2lypx00kncfvvttLe389xzzzFvXiE5wRVXXMEee+zBc889xzXXXMPpp58e7PvnP//Jb37zG+69914+8pGPcOCBB7JixQrS6TS/+c1v6Orq4vzzz+euu+7imWee4ayzzuILX/hC8PlsNstTTz3FN7/5Ta688koSiQRXXXUVixYtYvny5SxatKjbdq9evZoLLriA5557jr///e/87Gc/49FHH+WrX/0q11xzTb/2UWa//UhMmEDLx8/t+eBBhGgNK5oa3jC4MUJl+zEaC/RKs6gUu+22G2vWrGHJkiUcfvjhRfseffRRfvELLzjuoIMOYsOGDbzzjpft9LDDDsN1XWbPnk0ul2PhQi8X5+zZs1mzZg0vvPACK1eu5JBDDgG8VDAjRxaS733oQx8CYM6cOaxZs6bP7Z4wYQKzZ88GYObMmRx88MGISPD9/Ynd0MCkBwahia4Hxk7ek2cmj2L8/1xc7aYYDAOKESyDgKOPPprPfvazPPzww2zYsCHYHlcNwE/a51eetCwL13WD7ZZlkc1mUUoxc+ZMHn/88djv9D9v2zbZbLyj0nEc8iG/hp9xOfx5/zvD7Sl3vp0NSSSY+6s/VLsZBsOAY0xhg4CzzjqLyy+/PNAAfPbff39uu+02AB5++GGGDBlCfX3vanxMnTqVdevWBYKlq6uL559/vtvP1NXVsWnTpuD9+PHjefbZZwF49tlnefnll3t9TQaDYefFCJZBwJgxY7jgggtKti9evJhly5ax2267cckll/CTn/yk1+dMJBLcddddXHzxxey+++60trby2GOPdfuZAw88kL/97W+0trZyxx13cPzxx7Nx40ZaW1v53ve+x5QpU/p8bQaDYedDdtDii31i7ty5atmyZUXbVq1axfTpgyPx3c6A6W+DYcdDRJ5RSs3t6+eM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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x120eb3470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# training\n",
    "for epoch in range(EPOCH):\n",
    "    print('Epoch: ', epoch)\n",
    "    for step, (batch_x, batch_y) in enumerate(loader):          # for each training step\n",
    "        b_x = Variable(batch_x)\n",
    "        b_y = Variable(batch_y)\n",
    "\n",
    "        for net, opt, l_his in zip(nets, optimizers, losses_his):\n",
    "            output = net(b_x)              # get output for every net\n",
    "            loss = loss_func(output, b_y)  # compute loss for every net\n",
    "            opt.zero_grad()                # clear gradients for next train\n",
    "            loss.backward()                # backpropagation, compute gradients\n",
    "            opt.step()                     # apply gradients\n",
    "            l_his.append(loss.data[0])     # loss recoder\n",
    "\n",
    "labels = ['SGD', 'Momentum', 'RMSprop', 'Adam']\n",
    "for i, l_his in enumerate(losses_his):\n",
    "    plt.plot(l_his, label=labels[i])\n",
    "plt.legend(loc='best')\n",
    "plt.xlabel('Steps')\n",
    "plt.ylabel('Loss')\n",
    "plt.ylim((0, 0.2))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
